/**
 * 接口在函数中的使用
 * 使用接口主要用来约束函数的参数，函数的返回值，返回对象本身
 * 1、使用接口来约束函数的参数
 * 2、使用接口约束返回类型
 * 3、使用接口约束函数
 * type和interface区别
 * type不创建新的类型，常用于联合类型取别名
 * interface创建新的类型
 */

interface PersonType{
    name:string
    age:number
}
const introduce=(arg:PersonType)=>{
    return `我叫${arg.name},我今年${arg.age}岁`
}
console.log(introduce({name:'Giles',age:40}));
console.log('------------------------------------');

interface MapPointType{
    lat:number,
    lnt:number
}

type MapPointOrNullType=MapPointType|null
interface TransFormMapType{
    (arg:string):MapPointOrNullType
}


const transformMapFromAddrr=(address:string):MapPointType=>{
    let p={
        lat:38.467,
        lnt:117.90
    }
    if(address=="陕西省西安市图书馆"){
       p={
            lat:34.457,
            lnt:118.90
        }
    }else if(address==="山西省平遥"){
        p={
            lat:36.467,
            lnt:117.90
        }
    }
    return p
}


//console.log(transformMapFromAddrr("山西省平遥"));


const transformMapFromAddrr2:TransFormMapType=(address)=>{
    let p=null;
    if(address=="陕西省西安市图书馆"){
       p={
            lat:34.457,
            lnt:118.90
        }
    }else if(address==="山西省平遥"){
        p={
            lat:36.467,
            lnt:117.90
        }
    }
    return p
}


transformMapFromAddrr2("陕西省西安市图书")